1. The Field of the Invention
The present invention relates to systems and methods for customizing data provided to users. More particularly, the present invention relates to systems and methods for providing a user with the contextually appropriate data requested by an application based on properties associated with the user, a user""s computer, etc.
2. The Prior State of the Art
As access to the Internet through set top boxes and other systems becomes more prevalent, it is increasingly difficult to adapt or localize the images, text and other data provided to users in appropriate manners based on the language, country, and other attributes of the user. Ideally, all of these attributes are taken into account before the localized data is provided to the user. In reality, only one or two attributes are utilized in localizing data presented to an end user. Because the Internet has made data globally available, identifying contextually appropriate data is a pressing issue and there is a need for a decision process that is able to account for additional attributes such that data provided and presented to an end user is appropriately localized.
While the problem of localizing data or providing contextually appropriate data is usually related to user attributes or preferences, the set top boxes and other devices used to provide and display data to end users are made by multiple manufacturers and are available in a variety of configurations. Many set top boxes have a television tuner, while other set top boxes do not have a television tuner. Some set top boxes provide a relatively small display device, while other set top boxes have a relatively large display device. Thus, there are many factors in addition to user preferences that may potentially affect the version of data that is ultimately presented to an end user.
The localization of images and text to particular users has typically been based on a system or specific notion of locale. Current localization techniques typically specify a combination of both country and language such that the most appropriate cultural and linguistic behavior may be identified. This technique permits a single value or locale ID to identify most cultural and linguistic variants. For example, xe2x80x9cfr-CAxe2x80x9d specifies the French language in Canada while the value of xe2x80x9cfr-FRxe2x80x9d specifies the French language in France.
This approach is limited because relatively few cultural and linguistic combinations have been explicitly defined. Further, contextually identifying an appropriate linguistic source for user language preferences does not resolve other issues. For instance, if the language attribute of a particular user specifies only a single value, an appropriate fallback language cannot be selected if the primary language is not available.
The use of location or country introduces similar problems. For example, if a user is situated in a Canadian suburb of Detroit, the television, movie and restaurant listings provided to an end user should probably be those specific to Detroit, but the terms of service and other legal information are specific to Canada. Depending on the country attribute of the user, the data provided to the user may not be the most appropriate data. The combination of language and country is therefore not always satisfactory because the appropriate data localization is dependent on the application and on context. Thus, a country or location attribute does not always ensure a user of receiving contextually appropriate data.
Even though the notion of locale provided by using a combination of language and country in traditional systems is suitable for simple applications, it can become complex, redundant, and unmanageable when other factors are considered. For example, consider a web page where the text to be displayed is dependent on the size of the user""s display device. A typical solution is to store the text for large displays in a xe2x80x9clarge.txtxe2x80x9d file while the text for small displays is stored in a xe2x80x9csmall.txtxe2x80x9d file. This solution, while seemingly simple, is rather complex because a xe2x80x9csmall.txtxe2x80x9d file must be created for each separate language and country locale. In addition, if the xe2x80x9csmall.txtxe2x80x9d and xe2x80x9clarge.txtxe2x80x9d are included from other files, each point of inclusion in the text files must be appropriately modified. Alternatively, the application code can be altered to accommodate the potential possibilities that result from supporting two separate text files. Because the application code will most likely have to be altered in several locations, this alternative is complex, subject to having unintentional errors introduced into the code, and may ultimately provide inconsistent data to an end user.
At this stage, the complexity is still relatively manageable. Now, consider adding support for Japanese in the same example. Because of the difficulty of Kanji, Japanese children learn to read using phonetic scripts or Kanji annotated with the phonetic scripts. As a result of supporting Japanese in this example, there are four possibilities for each locale: adult, adult on a small screen, child, and child on a small screen. To accommodate each possibility, either four separate files must be created for each locale, or specialized and complicated code must be added to determine the appropriate version to be presented to a user. Creating four separate files quadruples the amount of text to be localized and increases the likelihood of inconsistent translation. Alteration of the code of the application must be made consistently throughout the application and it is more likely that different sections of the code will have inconsistent behavior as the code evolves over time.
The complexity of this problem increases exponentially as additional factors are taken into account. The complexity may be evident in the application""s source code, where it is very difficult to accurately modify primarily because alterations to different sections of the source code of an application can occur separately and inconsistently. Because the appropriate localization of data is primarily dependent on context and application, which in turn are dependent on a number of specific factors, current localization systems cannot effectively account for all factors because of the complexity that is introduced.
The present invention provides systems and methods for selecting contextually appropriate data. The attribute based content provided by the present invention, in addition to being extensible and configurable, avoids the complexity of altering an application""s source code by relieving the application from having to select an appropriate version or representation of data that is ultimately provided to an end user. By relieving applications of this responsibility, attribute based content ensures consistency across applications. Additionally, the appearance and behavior of particular applications can be customized without altering the application""s source code. In essence, attribute based content can be implemented by an extensible, embedded, externally configurable decision engine that provides applications and content providers that ability to easily and consistently provide contextually appropriate versions of both applications and data.
The overall purpose of an attribute based content system is to execute decisions for an application. For instance, assuming that multiple versions of a particular file or target are available, an attribute based content system would identify the appropriate version or instance of the file to be used by an application. The essential components of an attribute based content system that allow a contextually appropriate resource to be identified are a content directory and a decision engine.
When an application invokes the decision engine, the decision engine examines the compiled content directory for the rules that relate to the decision being made for the application. As part of this process, the decision engine may query the application for information about the context in which the decision is to be made. This information is typically in the form of user preferences, attributes and the like. The attribute based content system then returns a value that results from evaluating the rules specified in the content directory against the context used to satisfy the application""s request. The value returned by the decision engine is typically a string and the application is responsible for actually accessing the data or file referenced by the string returned by the decision engine if necessary.
Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.